package cn.itcast.crm.service;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

import cn.itcast.crm.domain.Customer;

/** 
 * 客户操作层
 *
 * @author Shao-Fei Fan 
 * @version 1.0,2017年9月8日 下午7:05:43 
 */
public interface ICustomerService {
	
	/**
	 * 查询所有未关联客户
	 * @return
	 */
	@Path("/noassociationcustomers")
	@GET
	@Produces({"application/xml,application/json"})
	public List<Customer> findNoAssociationCustomers();
	
	/**
	 * 查询所有已关联特定定区信息的客户
	 * @param fixedAreaId
	 * @return
	 */
	@Path("/hasassociationfixedareacustomers/{fixedareaid}")
	@GET
	@Produces({"application/xml,application/json"})
	public List<Customer> findHasAssociationFixedAreaCustomers(
			@PathParam("fixedareaid") String fixedAreaId);
	
	/**
	 * 将客户关联到定区上,客户id拼为字符串
	 */
	@Path("/associationcustomerstofixedarea")
	@PUT
	public void associationCustomersToFixedArea(
		@QueryParam("customerIdStr")	String customerIdStr,
		@QueryParam("fixedAreaId")	String fixedAreaId);
	
	/**
	 * 保存客户
	 * 
	 * @param customer
	 */
	@Path("/customer")
	@POST
	@Consumes("application/xml,application/json")
	public void saveCustomer(Customer customer);
	
	/**
	 * 根据电话号码查询客户信息
	 * @param fixedAreaId
	 * @return
	 */
	@Path("/customer/telephone/{telephone}")
	@GET
	@Produces({"application/xml,application/json"})
	public Customer findByTelephone(
			@PathParam("telephone") String telephone);
	
	/**
	 * 根据电话号码修改客户信息
	 * @param fixedAreaId
	 */
	@Path("/customer/updatetype/{telephone}")
	@GET
	public void updateType(@PathParam("telephone") String telephone);
		

}
